package com.xxx.redismq.common.config;

import com.xxx.redismq.common.pojo.Route;
import com.xxx.redismq.common.utils.RedisMqUtil;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;

import java.util.ArrayList;
import java.util.List;

/**
 * RedisMQ配置
 */
@Configuration
@PropertySource("classpath:mq.properties")
public class MqConfig {
	
    @Value("${mq.monitor.count}")
    private int monitorCount; // 监听zset的成员数量（score最大的前N个成员）
    
    @Value("${mq.queue.first}")
    private String queueFirst; // 第一个队列名
    
    @Value("${mq.queue.second}")
    private String queueSecond; // 第二个队列名
    
    @Value("${mq.consumer.first}")
    private String listFirst; 	// 消费方接收的待消费list一
    
    @Value("${mq.consumer.second}")
    private String listSecond; 	// 消费方接收的待消费list二

    @Bean(name = "redisMQ")
    @Primary
    public RedisMqUtil getRedisMq() {
        RedisMqUtil redisMQ = new RedisMqUtil();
        // 配置监听队列元素数量
        redisMQ.setMonitorCount(monitorCount);
        // 配置路由表
        redisMQ.setRoutes(routeList());
        return redisMQ;
    }

    /**
     * 返回路由表
     * @return
     */
    public List<Route> routeList() {
        List<Route> routeList = new ArrayList<>();
        Route routeFirst = new Route(queueFirst, listFirst);
        Route routeSecond = new Route(queueSecond, listSecond);
        routeList.add(routeFirst);
        routeList.add(routeSecond);
        return routeList;
    }

}